package com.ys.多线程.p5线程常用方法2设置线程的优先级;

import com.ys.多线程.p2创建线程实现Runnable接口.RabbitTask;
import com.ys.多线程.p2创建线程实现Runnable接口.TortoiseTask;

/**
 * 描述:
 * 优先级：线程优先执行顺序
 *
 * Java中某个线程优先级设置越高，优先执行完毕的概率越大
 *
 * 线程优先级有三种：高优先级(10)、普通优先级(5)、低优先级(1)
 *
 * 默认优先级：普通优先级(5)
 *
 * 线程优先级机制：NBA选秀
 *
 * 相关方法：setPriority(int)
 *
 * 优先级越高,代表优先执行完的概念越大
 *
 * @author CodeYang
 * @version 2021/1/5 0:34
 */
public class p1设置线程的优先级 {

    public static void main(String[] args) {
        RabbitTask rabbitTask = new RabbitTask();
        TortoiseTask tortoiseTask = new TortoiseTask();
        // 兔子线程
        Thread t1 = new Thread(rabbitTask);
        // 乌龟线程
        Thread t2 = new Thread(tortoiseTask);
        ///////////////////////////////////////
        // 乌龟线程最高优先级
        //t2.setPriority(10);
        // 乌龟线程最低优先级
        //t1.setPriority(1);
        //////////////////兔子优先级最高，乌龟优先级最低/////////////////////
        // 线程优先级越高，优先执行完毕概率越大(兔子优先级最高，6次里面有5次都先执行完毕)
        // 工作中1和10不知道表示啥意思，这个叫做魔鬼数字(不知道它表示啥意思)
        // t1.setPriority(10);
        //t2.setPriority(1);
        // 如何代替魔鬼数字?使用常量代替魔鬼数字
       // t1.setPriority(Thread.MAX_PRIORITY);
        t1.setPriority(1);
        t2.setPriority(Thread.MIN_PRIORITY);
        t1.start();
        t2.start();

        //小结：java的线程优先级：只支持1 5 10，工作中使用常量表示线程优先级
        //什么是魔鬼数字:
        /**
         * 魔鬼数字的定义：在代码中没有具体含义的数字、字符串。
         *
         * 魔鬼数字主要影响了代码可读性，读者看到的数字无法理解其含义
         * ，从而难以理解程序的意图。当程序中出现的魔鬼数字过多时，代码的可维护性将会急剧下降，
         * 代码变得难以修改，并容易引入错误。
         * 一般表现为,只有你自己懂的数字,有什么作用
         *
         * 解决办法:用有意义名称的常量定义魔鬼数字。
         */
    }
}
